找传奇、传世资源到传世资源站!

C# 开启摄像头/拍照/截图 实例源码

8.5玩家评分(1人评分)
下载后可评
介绍 评论 失效链接反馈

C# 开启摄像头/拍照/截图 实例源码 C#语言基础-第1张using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Runtime.InteropServices;using System.Drawing.Imaging;using System.Net;using System.Net.Sockets;using System.Threading;namespace camera{ //Socket tmpClient = null; public partial class CameraForm : Form { private int hHwnd; private const int port = 2000; public CameraForm() { InitializeComponent(); } public struct videohdr_tag { public byte[] lpData; public int dwBufferLength; public int dwBytesUsed; public int dwTimeCaptured; public int dwUser; public int dwFlags; public int[] dwReserved; } public delegate bool CallBack(int hwnd, int lParam); /// <summary> /// 必需的设计器变量。 /// </summary> //private System.ComponentModel.Container components = null; [DllImport("avicap32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern int capCreateCaptureWindowA([MarshalAs(UnmanagedType.VBByRefStr)] ref string lpszWindowName, int dwStyle, int x, int y, int nWidth, short nHeight, int hWndParent, int nID); [DllImport("avicap32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern bool capGetDriverDescriptionA(short wDriver, [MarshalAs(UnmanagedType.VBByRefStr)] ref string lpszName, int cbName, [MarshalAs(UnmanagedType.VBByRefStr)] ref string lpszVer, int cbVer); [DllImport("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern bool DestroyWindow(int hndw); [DllImport("user32", EntryPoint = "SendMessageA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern int SendMessage(int hwnd, int wMsg, int wParam, [MarshalAs(UnmanagedType.AsAny)] object lParam); [DllImport("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern int SetWindowPos(int hwnd, int hWndInsertAfter, int x, int y, int cx, int cy, int wFlags); [DllImport("vfw32.dll")] public static extern string capVideoStreamCallback(int hwnd, videohdr_tag videohdr_tag); [DllImport("vicap32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern bool capSetCallbackOnFrame(int hwnd, string s); private void OpenCapture() { int intWidth = this.panel1.Width; int intHeight = this.panel1.Height; int intDevice = 0; string refDevice = intDevice.ToString(); //创建视频窗口并得到句柄 hHwnd = CameraForm.capCreateCaptureWindowA(ref refDevice, 1342177280, 0, 0, 640, 480, this.panel1.Handle.ToInt32(), 0); if (CameraForm.SendMessage(hHwnd, 0x40a, intDevice, 0) > 0) { CameraForm.SendMessage(this.hHwnd, 0x435, -1, 0); CameraForm.SendMessage(this.hHwnd, 0x434, 0x42, 0); CameraForm.SendMessage(this.hHwnd, 0x432, -1, 0); CameraForm.SetWindowPos(this.hHwnd, 1, 0, 0, intWidth, intHeight, 6); } else { CameraForm.DestroyWindow(this.hHwnd); } } private void button1_Click(object sender, EventArgs e) { this.OpenCapture(); } private void button2_Click(object sender, EventArgs e) { //停止视频注销视频句柄 CameraForm.SendMessage(this.hHwnd, 0x40b, 0, 0); CameraForm.DestroyWindow(this.hHwnd); } //截图 private void button3_Click(object sender, EventArgs e) { try { CameraForm.SendMessage(this.hHwnd, 0x41e, 0, 0); IDataObject obj1 = Clipboard.GetDataObject(); if (obj1.GetDataPresent(typeof(Bitmap))) { Image image1 = (Image)obj1.GetData(typeof(Bitmap)); SaveFileDialog SaveFileDialog1 = new SaveFileDialog(); SaveFileDialog1.FileName = DateTime.Now.ToString("yyyyMMddhhmmss"); SaveFileDialog1.Filter = "Image Files(*.JPG;*.GIF)|*.JPG;*.GIF|All files (*.*)|*.*"; if (SaveFileDialog1.ShowDialog() == DialogResult.OK) { image1.Save(SaveFileDialog1.FileName, ImageFormat.Bmp); } } } catch { } } }}

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复